package fun.coding.leetcode;

import java.util.ArrayList;
import java.util.Set;

public interface LeetCode {
    public ListNode mergeKLists(ArrayList<ListNode> lists);
    
    public int numDecodings(String s);
    
    public int climbStairs(int n);
    
    public ArrayList<ArrayList<Integer>> permute(int[] num);
    public ArrayList<ArrayList<Integer>> permuteRecursive(int[] num);
    
    public ArrayList<ArrayList<Integer>> permuteUnique(int[] num);
    
    public boolean isValidSudoku(char[][] board);
    public boolean isSameTree(TreeNode p, TreeNode q);
    public ArrayList<ArrayList<Integer>> combine(int n, int k);
    
    public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num);
    
    public boolean isSymmetric(TreeNode root);
    
    public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root);
    
    public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root);
    
    public boolean hasPathSum(TreeNode root, int sum);
    
    public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum);
    
    public double pow(double x, int n);
    
    public int minDepth(TreeNode root);
    
    public boolean wordBreakDFS(String s, Set<String> dict);
    
    public boolean wordBreak(String s, Set<String> dict);

}
